﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="ICodeGenerator.cs" company="Data Ductus Malmö">
//   (c) 2010 - 2012 Data Ductus Malmö AB
// </copyright>
// --------------------------------------------------------------------------------------------------------------------

namespace DataDuctus.Snmp.Persistor.Core.CodeGen
{
  using System.IO;

  using DataDuctus.Snmp.Persistor.Core.Schema;

  /// <summary>
  /// The CodeGenerator interface.
  /// </summary>
  public interface ICodeGenerator
  {
    #region Public Properties

    /// <summary>
    /// Gets the type.
    /// </summary>
    CodeGeneratorTypes Type { get; }

    #endregion

    #region Public Methods and Operators

    /// <summary>
    /// The generate.
    /// </summary>
    /// <param name="item">
    /// The item.
    /// </param>
    /// <param name="profile">
    /// The profile.
    /// </param>
    /// <param name="codeStream">
    /// The code stream.
    /// </param>
    /// <param name="config">
    /// The config.
    /// </param>
    void Generate(
      ISchemaItem item, ICodeGeneratorProfile profile, TextWriter codeStream, CodeGeneratorConfiuguration config);

    #endregion
  }
}